// 引入express
const express = require('express')
//创建路由器中间件(对象)
// router就相当于是一个app
const router = express.Router()

// 引入model
const model = require('../db/model')

// 注册
router.post('/registe', async (req, res) => {
  // 获取用户名和密码
  // 注意: 从body中结构数据的属性,决定了浏览器上传的属性名
  const { username, password } = req.body

  // 将用户上传的信息添加到数据库中
  // 注意: 添加数据到数据库中,属性名怎么写取决于schema中定义的属性
  await model.create({ username, password })

  // 一旦注册成功,让浏览器直接访问登录页面
  res.redirect('/login.html')
})

// 登录
router.post('/login', async (req, res) => {
  // 获取用户上传的用户名和密码
  const { username, password } = req.body
  // 去数据库中查看是否有这个数据
  const user = await model.findOne({ username, password })

  if (user) {
    // req.session.userId = user.id的作用: 1. 开启session 2.将用户的id存储到session中 3. 将sessionid通过响应头传递给浏览器让浏览器存储到cookie中
    // 注意:添加数据的时候,属性名不要使用id.会冲突
    req.session.userId = user._id

    // 有则代表登录成功
    res.redirect(`/home?name=${user.username}`)
  } else {
    // 没有则代表登录失败
    // 提示用户用户名或密码输入错误
    // 注意: 服务器响应给浏览器的字符串.浏览器会自动当做html去解析
    res.send(
      `用户名或密码输入错误,请重试 <a href="/login.html">登录</a>  <a href="/register.html">注册</a>`
    )
  }
})
// 响应home页面
router.get('/home', async (req, res) => {
  // 1. req.session先从请求头中拿到cookie中存储的sessionid数据,然后根据sessionid去sesssion中查找数据
  if (req.session.userId) {
    const { name } = req.query
    // console.log(name)
    res.render('home', { username: name })
  } else {
    res.redirect('/login.html')
  }
})

module.exports = router
